home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TeX 1995 July
/
TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO
/
macros
/
latex209
/
contrib
/
loggates
/
loggates.sty
< prev
next >
Wrap
Text File
|
1992-06-14
|
6KB
|
140 lines
%%% ====================================================================
%%% @LaTeX-style-file{
%%% author = "Nico Verwer",
%%% version = "1.1",
%%% date = "8 April 1992",
%%% filename = "loggates.sty",
%%% address = "Dept. of Computer Science
%%% Rijksuniversiteit te Utrecht
%%% P.O. box 80.089
%%% 3508 TB Utrecht
%%% the Netherlands",
%%% telephone = "+31 30 533921",
%%% FAX = "+31 30 513791",
%%% email = "nico@cs.ruu.nl (Internet)",
%%% codetable = "ISO/ASCII",
%%% keywords = "TeX, LaTeX, logical gates symbols",
%%% supported = "yes",
%%% docstring = "This file accompanies the file loggates.mf
%%% which contains Metafont definitions of
%%% symbols for drawing digital circuit diagrams.
%%% It defines macros to draw all possible
%%% gates in all directions.
%%% If you use this file with plain TeX, you may
%%% want to call it loggates.tex. Since it uses @
%%% as a character, it must be a style file in
%%% LaTeX.
%%% The next version of this file will include
%%% an interface with the XY-pic package for
%%% drawing diagrams.",
%%% }
%%% ====================================================================
%
\font\loggates=loggates
%
\def\BusWidth{{\loggates\char0}} % '/' for bus width notation
%
% Defintions for gates. All the gates that may have more than one
% input (AND, NAND, OR, NOR, XOR, NXOR) may be followed by a single
% digit from 2 to 5, to indicate the number of inputs.
% On the OR-like gates, this will draw short input lines; for the
% AND-like gates it has no effect.
%
\def\ANDr{\gdef\@gate{\char1}\@NIN} % AND gate facing right
\def\ANDd{\gdef\@gate{\char2}\@NIN} % down
\def\ANDl{\gdef\@gate{\char3}\@NIN} % left
\def\ANDu{\gdef\@gate{\char4}\@NIN} % up
\def\NANDr{\gdef\@gate{\char5}\@NIN} % NAND gate facing right
\def\NANDd{\gdef\@gate{\char6}\@NIN} % etcetera...
\def\NANDl{\gdef\@gate{\char7}\@NIN}
\def\NANDu{\gdef\@gate{\char8}\@NIN}
\def\ORr{\gdef\@gate{\char9}\@INr} % OR gate
\def\ORd{\gdef\@gate{\char10}\@INd}
\def\ORl{\gdef\@gate{\char11}\@INl}
\def\ORu{\gdef\@gate{\char12}\@INu}
\def\NORr{\gdef\@gate{\char13}\@INr} % NOR gate
\def\NORd{\gdef\@gate{\char14}\@INd}
\def\NORl{\gdef\@gate{\char15}\@INl}
\def\NORu{\gdef\@gate{\char16}\@INu}
\def\BUFr{{\loggates\char17}} % Buffer
\def\BUFd{{\loggates\char18}}
\def\BUFl{{\loggates\char19}}
\def\BUFu{{\loggates\char20}}
\def\INVr{{\loggates\char21}} % Inverter
\def\INVd{{\loggates\char22}}
\def\INVl{{\loggates\char23}}
\def\INVu{{\loggates\char24}}
\def\XORr{\gdef\@gate{\char25}\@INr} % XOR gate
\def\XORd{\gdef\@gate{\char26}\@INd}
\def\XORl{\gdef\@gate{\char27}\@INl}
\def\XORu{\gdef\@gate{\char28}\@INu}
\def\NXORr{\gdef\@gate{\char29}\@INr} % NXOR gate, a.k.a. comparator
\def\NXORd{\gdef\@gate{\char30}\@INd}
\def\NXORl{\gdef\@gate{\char31}\@INl}
\def\NXORu{\gdef\@gate{\char32}\@INu}
%
% In order to connect input lines we define some skips.
%
\newskip\INmskip\setbox0=\hbox{{\loggates\char35}}\INmskip\ht0%
\def\deflgskip#1#2{\setbox0=\hbox{{\loggates\char#2}}%
\global\newskip#1\global#1\ht0%
\global\advance #1 by-\INmskip}
\deflgskip\INuskip{33}
\deflgskip\INlskip{34}
\deflgskip\INumskip{36}
\deflgskip\INlmskip{37}
\deflgskip\INmuskip{38}
\deflgskip\INmlskip{39}
\INmskip 0pt
%
% The following definitions are internal to loggates, and should not
% normally be used.
%
\def\@gobble#1{} %Not strictly necessary in LaTeX...
\def\@NIN{\futurelet\next\@@NIN}
\def\@@NIN{\let\@next\@gobble%
{\loggates\@gate}%
\ifx\next2\else\ifx\next3\else\ifx\next4\else\ifx\next5%
\else\let\@next\relax\fi\fi\fi\fi\@next}
\def\@INr{\futurelet\next\@@INr}
\def\@@INr{\let\@next\@gobble%
\ifx\next2{\loggates\char33\char34\@gate}%
\else\ifx\next3{\loggates\char33\char34\char35\@gate}%
\else\ifx\next4{\loggates\char33\char34\char38\char39\@gate}%
\else\ifx\next5{\loggates\char33\char34\char35\char36\char37\@gate}%
\else{\loggates\@gate}\let\@next\relax\fi\fi\fi\fi\@next}
\def\@INd{\futurelet\next\@@INd}
\def\@@INd{\let\@next\@gobble%
\def\@up##1{\setbox0=\hbox{\@gate}\raise\ht0\hbox{\loggates##1}}%
\ifx\next2%
\hbox{\loggates\@up{\char40\char41}\@gate}%
\else\ifx\next3%
\hbox{\loggates\@up{\char40\char41\char42}\@gate}%
\else\ifx\next4%
\hbox{\loggates\@up{\char40\char41\char45\char46}\@gate}%
\else\ifx\next5%
\hbox{\loggates\@up{\char40\char41\char42\char43\char44}\@gate}%
\else%
\hbox{\loggates\@gate}\let\@next\relax\fi\fi\fi\fi\@next}
\def\@INl{\futurelet\next\@@INl}
\def\@@INl{\let\@next\@gobble%
\def\@up##1{\setbox0=\hbox{\@gate}\raise\ht0\hbox{\loggates##1}}%
\ifx\next2%
\hbox{\loggates\@gate\@up{\char47\char48}}%
\else\ifx\next3%
\hbox{\loggates\@gate\@up{\char47\char48\char49}}%
\else\ifx\next4%
\hbox{\loggates\@gate\@up{\char47\char48\char52\char53}}%
\else\ifx\next5%
\hbox{\loggates\@gate\@up{\char47\char48\char49\char50\char51}}%
\else%
\hbox{\loggates\@gate}\let\@next\relax\fi\fi\fi\fi\@next}
\def\@INu{\futurelet\next\@@INu}
\def\@@INu{\let\@next\@gobble%
\ifx\next2{\loggates\@gate\char54\char55}%
\else\ifx\next3{\loggates\@gate\char54\char55\char56}%
\else\ifx\next4{\loggates\@gate\char54\char55\char59\char60}%
\else\ifx\next5{\loggates\@gate\char54\char55\char56\char57\char58}%
\else{\loggates\@gate}\let\@next\relax\fi\fi\fi\fi\@next}